﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#if 0
//打印 1~100之间的奇数
void printodd()
{
	for (int i = 1; i <= 100; i++)
	{
		if (i%2 != 0)
		{
			printf("%d ", i);
		}
	}
}
//乘法表
void printmultiplicationt()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%d*%d=%d ", j,i , i * j);
		}
		printf("\n");
	}
}
//打印素数
void printsushu()
{
	for(int i = 101; i <= 200; i+=2)
	{
		int flang = 1;//假设是素数
		for (int j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flang = 0;
				break;
			}
		}
		if (flang == 1)
		{
			printf("%d ", i);
		}
	}
}
//输⼊三个整数a,b,c，判断由a,b,c作为三条边组成的三⻆形，如果不能组成三⻆形则输出：⾮三⻆
//形；如果是三⻆形，再继续判断，如果是等边三⻆形，则输出：等边三⻆形；如果是等腰三⻆形，则
//输出：等腰三⻆形；否则输出普通三⻆形。
int main()
{
	int a, b, c;
	while (scanf("%d %d %d", &a, &b, &c) != EOF)
	{
		if (a + b < c || a + c < b || c + b < a)
		{
			printf("非三角形！\n");
		}
		else
		{
			if (a == b && b == c)
			{
				printf("等边三角形\n");
			}
			else if (a == b || a == c || b == c)
			{
				printf("等腰三角形\n");
			}
			else
			{
				printf("普通三角形\n");
			}
		}
	}
	return 0;
}
#endif
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	if (a < b) 
	{
		int tmp = a;
		a = b;
		b = tmp;
	}
	int c = 1;
	while (1)
	{
		c = a % b;
		if (c==0)
		{
			break;
		}
		else {
			a = b;
			b = c;
		}
	}
	printf("%d ", b);
	return 0;
}